草庐IT

ruby - Proc 和 Lambda 之间的区别

全部标签

Ruby - 从对象内部调用 setter

这个问题在这里已经有了答案:WhydoRubysettersneed"self."qualificationwithintheclass?(3个答案)关闭7年前。我一直在研究PragmaticProgrammers的“ProgrammingRuby”一书,想知道是否可以在类中调用setter方法,而不是直接分配给实例变量。classBookInStockattr_reader:isbn,:pricedefinitialize(isbn,price)@isbn=isbn@price=Float(price)enddefprice_in_centsInteger(price*100+0.5

ruby - 用于删除下一个/尾随字符的转义序列?

除了使用\x08删除前导字符外,是否可以同时删除尾随字符?是否有一个转义序列将删除下一个字符而不是前一个字符?我看到delete显然映射到ASCII127,即Hex7F,但以下代码:puts"a\x08b\x7fcd"产生b⌂cd我预计\x7f会删除它后面的'c'字符,但它没有。 最佳答案 您实际上并没有使用\x08删除任何内容,您只是用“b”覆盖了“a”。想象一下您使用电传纸质终端的过去。您实际上会在纸上看到的是打印的“a”,电传打字机会备份一个空格,然后在其上打印“b”。所有非打印的ascii码都是为了控制电传纸终端的移动而发明

ruby - 在 Ruby 中实现 gpg 加密

尝试将一些旧的shell/unix脚本转换为Ruby。我对一个文件进行了以下加密,这是通过Unix中的gpg工具完成的。我可以传入接收者key、我要加密的文件和输出文件到pgp加密一些东西。gpg--recipient"$my_recipient_key"\--encrypt"$my_file"\--output"$my_outfile"\--always-trust\--compress-algozip像上面那样进行简单加密的Ruby等价物是什么?经过一些挖掘,我看到:OpenPGP很流行,但是在RubyGems网站上没有文档,其他地方也很少有很好的例子。gpgme似乎很受欢迎,很有

ruby-on-rails - If 语句中额外的 Ruby 行会导致 Haml 出现问题吗?

我试图在我的一个HamlView中的If/Else语句中放置一些(未呈现的)注释,但它似乎会导致问题。我想要以下代码:-#Stufflike______activatestheifstatement-if@condition(Somecode)-#Stufflike_____activatestheelsestatement-else(Someothercode)不幸的是,Rails向我抛出这个错误:Got"else"withnopreceding"if"如果我删除“其他”注释,即-#Stufflike______activatestheifstatement-if@condition

ruby - 为什么退出 Ruby 线程会杀死我的整个程序?

我有这段代码:puts"Start"loopdoThread.startdoputs"Hellofromthread"exitendtext=getsputs"#{text}"endputs"Done"我希望看到“Start”后跟“Hellofromthread”,然后我可以输入会得到回显的输入。相反,我得到“Start”和“Hellofromthread”,然后程序退出。来自关于exit的文档:Terminatesthrandschedulesanotherthreadtoberun.Ifthisthreadisalreadymarkedtobekilled,exitreturnst

ruby-on-rails - 试图在 gem 中要求 active_support

我有一个ruby​​gem,我想在包含在railsactive_support模块中的gem中使用Hash.from_xml方法。我的gemspec中有以下代码:gem.add_dependency'active_support','~>3.0.0'但是,当我在本地构建和安装gem、运行irb、需要gem时,我没有看到包含主动支持的方法?关于我做错了什么或如何调试有什么建议吗?谢谢! 最佳答案 您需要从ActiveSupport要求您需要的方法;默认情况下不添加它们。正如Yevgeniy在评论中提到的那样,如果您需要所有内容,则执行

ruby-on-rails - CGI::escapeHTML 正在转义单引号

我最近将我的Ruby1.9.3升级到2.0.0并感到惊讶;CGI::escapeHTML现在转义单引号,意思是:CGI::escapeHTML("'")=>"'"最奇怪的是,当定义escapeHTML时,一切似乎都很好,复制方法的定义给出了正确的结果(它不转义单引号)有人知道这件事吗?谢谢, 最佳答案 实际上,它执行2.0源代码中定义的操作。但你是对的,实现从1.9.3更改为2.0。1.9.3source:defCGI::escapeHTML(string)string.gsub(/[&\"]/,TABLE_FOR_ESCA

ruby-on-rails - Ruby 中的 ->() { } 是什么?

我刚刚在Ruby/Rails应用程序中看到了这个表达式:defmethod(a,b=nil,&c)c||=->(v){v}我理解第一部分,但不理解->(){...}语法。什么意思?为简洁起见,变量名称已更改。我尝试搜索,但非字母数字字符显然是SEO的噩梦。 最佳答案 它是一个lambda字面量。将block变量放在()中,将主体放在{}中。->(x,y){x+y}在示例中,->(v){v}接受一个参数v并返回它,换句话说,它是一个恒等函数。如果一个block被传递给method,那么它被分配给c。如果不是,恒等函数默认分配给c。

ruby - 手动更新 Carrierwave Uploader 安装的属性

我无法对由载波uploader装载的属性使用model.update_attribute。SQL语句不会接受该值并将NULL添加到占位符。如果我从模型类中删除mount_uploader语句,它会正常工作。我正在从控制台进行故障排除并尝试在为数据库播种时添加一些属性,这阻碍了我的努力。想法?谢谢。更新:相关代码:classProfile我只是想从数据库种子文件重写:avatar字符串,同时从Rails控制台进行测试,如下所示:Profile.first.update_attribute(:avatar,'foo')当我注释掉mount_uploader行时,两者都有效。添加mount_

ruby-on-rails - link_to 与 url_for 与 Rails 中的路径

我开始学习RubyonRails,我有一些疑问。我已经看到Railsdocumentation但我完全不明白它们之间的区别:url_forlink_to路径我如何使用/发现我的应用程序的路径?此外,我可以在路径中发送一个参数,例如:有这样的东西吗? 最佳答案 url_for为您提供网站的完整url,例如:www.example.com/my/path将来自url_formy_path_url.link_to为您提供指向特定路径的链接,例如:link_toexample_path,"clickme"会导致clickme您也可以像这样将